package com.skyline.base.dao;

import java.util.List;

import com.skyline.base.model.Notification;
import com.skyline.base.type.NotificationType;

/**
 * NoticeDao为通知接口(例如：评论通知，好友观注通知，管理员操作通知等)
 * 
 * @author jairus
 * 
 * @version 0.1
 * 
 */
public interface NoticeDao {

	/**
	 * insertNotication为插入通知的接口
	 * 
	 * @param ownerId
	 *            用户的ID
	 * @param notifierId
	 *            通知者的ID
	 * @param notifierNickname
	 *            通知者的nickname
	 * @param resourceId
	 *            资源的ID,关于哪一个资料所进行的通知
	 * @param resourceTitle
	 *            资源的Title
	 * @param type
	 *            资源类型
	 */
	public void insertNotication(Long ownerId, Long notifierId, String notifierNickname, String resourceId,
			String resourceTitle, NotificationType type);

	/**
	 * findNotificationByOwnerId，通过用户自己的ID来查询自己的通知
	 * 
	 * @param ownerId
	 *            用户的ID
	 * @return 这位用户所收到的通知
	 */
	public List<Notification> findNotificationByOwnerId(Long ownerId);

	/**
	 * findNotificationById，通过通知的ID来获取这条通知
	 * 
	 * @param id
	 *            通知的ID
	 * @return ID为{id}的通知
	 */
	public Notification findNotificationById(Long id);

	/**
	 * deleteNotificationById,根据id来删除通知
	 * 
	 * @param id
	 *            所需删除的通知的ID
	 */
	//public void deleteNotificationById(Long id);

	/**
	 * deleteNotificationByResource，通过资源信息来删除通知
	 * 
	 * @param resourceId
	 *            所需删除的资源的ID
	 * @param type
	 *            所需删除的资源的类型
	 */
	public void deleteNotificationByResource(Long ownerId, String resourceId, NotificationType type);

}
